﻿//载入动画
//#include "gamepanel.h"
#include "loading1.h"
#include <QPainter>
#include <QTimer>
Loading1::Loading1(QWidget* parent) : QWidget(parent)
{
    // m_bk是一个Qpixmap
    m_bk.load(":/images/loading.png");

    // 设置Loading窗口的大小
    setFixedSize(m_bk.size());

    // 21点的欢迎图片
    m_bk.load(":/images/21.png");

    // 去掉窗口的边框
    setWindowFlags(Qt::FramelessWindowHint | windowFlags());

    // 将图片的背景设为透明
    setAttribute(Qt::WA_TranslucentBackground);

    // pixmap为进度条
    QPixmap pixmap(":/images/progress.png");

    // 设置定时器
    QTimer* timer = new QTimer(this);

    // 定时器每隔15ms发出信号，执行这个lamda表达式
    // 这个lanmda表达式的作用是每隔一段时间调用paint事件绘图  
    connect(timer, &QTimer::timeout, this, [=]() {
        //m_progress存储的是持续增长的一截进度条
        m_progress = pixmap.copy(0, 0, m_dist, pixmap.height());

        //相当于调用了绘图事件
        update();

        //判断进度条是不是到头了
        if (m_dist >= pixmap.width())
        {
            // 定时器停止
            timer->stop();

            //定时器销毁
            timer->deleteLater();

            //产生新的窗口
            //GamePanel* panel = new GamePanel;
            //panel->show();

            //因为要产生新窗口了，所以这个loading窗口需要关闭！！
            close();
        }

        //一次增长5个进度条
        m_dist += 5;
        });

    // 每隔15ms发出信号
    timer->start(15);
}

// 绘图事件
void Loading1::paintEvent(QPaintEvent* event)
{
    Q_UNUSED(event)
        QPainter p(this); //画家

    // 进度条后画，原因在于要浮于斗地主图片上方
    p.drawPixmap(rect(), m_bk);  //画地主
    p.drawPixmap(62, 417, m_progress.width(), m_progress.height(), m_progress);  //画进度条
}
